package com.javakc.mes.basis.section.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.javakc.mes.basis.area.entity.Area;
import com.javakc.mes.basis.roadway.entity.Roadway;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.validator.constraints.Length;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;

import javax.persistence.*;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@Setter
@Getter
@Data
@Table(name = "maintain_work_section")
@Entity
public class Section {
    @Id
    @GeneratedValue
    private int id ;
    /** 工作面名称 */
    @NotBlank(message = "工作面名称不能为空")
    @Length(min = 2,max = 60,message = "工作面名称长度应该在{min}-{max}之间")
    private String sectionName ;
    /** 工作面状态 */
    @NotNull(message = "工作面状态不能为空")
    private Integer sectionStatus ;
    /** 回采方式 */
    @NotNull(message = "回采方式不能为空")
    private Integer sectionPickType ;
    /** 落煤方式 */
    @NotNull(message = "落煤方式不能为空")
    private Integer sectionDropType ;
    /** 采高 */
    @NotNull(message = "采高不能为空")
    private BigDecimal sectionPickHigh ;
    /** 采长 */
    @NotNull(message = "采长不能为空")
    private BigDecimal sectionPickLong ;
    /** 走向长 */
    @NotNull(message = "走向长不能为空")
    private BigDecimal sectionTowardsLong ;
    /** 煤厚 */
    @NotNull(message = "煤厚不能为空")
    private BigDecimal sectionCoalThick ;
    /** 容量 */
    @NotNull(message = "容量不能为空")
    private BigDecimal sectionCoalCapacity ;
    /** 计算储量 */
    @NotNull(message = "计算储量不能为空")
    private BigDecimal sectionReserves ;
    /** 备注 */
    private String sectionRemark;

    /** 采区
     * 一对多关系 工作面维护
     * */
    @ManyToOne
    @JoinColumn(name = "area_id")
    private Area area;
    /**
     * 一对多关系
     */
    @OneToMany(mappedBy = "section",fetch = FetchType.EAGER)
    private List<Roadway> list = new ArrayList<>();

    /** 删除状态 */
    private Double deleteFlag ;
    /** 创建人 */
    private String createdBy ;
    /** 创建时间 */
    @CreatedDate
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @Column(name = "created_time",updatable = false)
    private Date createdTime ;
    /** 更新人 */
    private String updatedBy ;
    /** 更新时间 */
    @LastModifiedDate
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @Column(name = "updated_time",insertable = false)
    private Date updatedTime ;

}
